package com.wjr.braveheart.db;

import android.text.TextUtils;
import android.util.ArrayMap;

import java.util.List;
import java.util.Map;


/**
 * 根据URL缓存网络的数据
 */

public class CacheUtils {
    private static final Map<String, String> mCacheMap = new ArrayMap<>();

    /**
     * 从数据库获取Json
     */
    public static String getCacheJson(String url) {
        String md5Url = MD5.getHexMD5(url);
        // 从数据库读取
        IDaoSupport<CacheData> dao = DaoSupportFactory.getFactory().getDao(CacheData.class);
        List<CacheData> list = dao.querySupport()
                .selection("url = ?")
                .limit("0,1")
                .selectionArgs(md5Url)
                .query();
        String cacheJson = null;
        if (list != null && list.size() > 0) {
            cacheJson = list.get(0).getJson();
            if (!TextUtils.isEmpty(cacheJson)) {
                mCacheMap.put(md5Url, cacheJson);
            }
        }
        return cacheJson;
    }

    public static void cacheJson(final String url, final String json) {
        if (TextUtils.isEmpty(json)) {
            return;
        }
        String md5Url = MD5.getHexMD5(url);
        // 从内存缓存取
        String cacheJson = mCacheMap.get(md5Url);
        // 从数据库取
        if (TextUtils.isEmpty(cacheJson)) {
            cacheJson = getCacheJson(url);
        }
        // 1.如果cacheJson为空--就添加一条数据
        if (TextUtils.isEmpty(cacheJson)) {
            IDaoSupport<CacheData> dao = DaoSupportFactory.getFactory().getDao(CacheData.class);
            dao.insert(new CacheData(md5Url, json));
        } else {
            // 2.不为空就更新数据-- 如果Json一样就不处理，不一样就更新
            if (!json.equals(cacheJson)) {
                IDaoSupport<CacheData> dao = DaoSupportFactory.getFactory().getDao(CacheData.class);
                dao.update(new CacheData(md5Url, json), "url = ?", md5Url);
            }
        }
    }


}